package proj.reseau;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server extends Thread {
	private Config config;
	private Fichiers fichiers;
	private boolean stop;
	public Server(Config config, Fichiers fichiers) {
		this.config=config;
		this.fichiers=fichiers;
		stop = false;
	}
	
	public void stopSever()
	{
		stop = true;
	}
	
	public void run() {

		ServerSocket serverSocket=null;
		int port=Integer.parseInt(config.getProperty("listening-port"));
		try {
			serverSocket = new ServerSocket(port);

			serverSocket.setReuseAddress(true);
			
			
			System.out.println("Le Serveur est pret, sur le port " + port);
		}
		catch (IOException e) {
			System.err.println("Exception: impossible de creer ServerSocket: " + e);
			System.exit(1);
		}

		// boucle infinie attendant des clients
		while (!stop) {
			try {
				System.out.println("en attente d'une nouvelle connection client...");

				Socket clientSocket = serverSocket.accept();
				System.out.println("nouvelle connection etablie : " + clientSocket.getInetAddress().toString() + " : " + clientSocket.getPort());
				new Thread(new ClientResponse(config, clientSocket, fichiers)).start();
			}
			catch(IOException e) {
				System.err.println("Exception lancee par ServerSocket.accept: " + e);
				System.exit(1);
			}
		}
		System.out.println("Seveur arrêté");
	}

}
